package br.unifor.ads.desphouse.ui;

import java.util.List;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JFormattedTextField;

import br.unifor.ads.desphouse.business.LancamentoBusiness;
import br.unifor.ads.desphouse.business.LancamentoTipoBusiness;
import br.unifor.ads.desphouse.entity.LancamentoTipo;
import br.unifor.ads.desphouse.exception.BusinessException;
import br.unifor.ads.desphouse.internacionalizacao.Dicionario;
import br.unifor.ads.desphouse.util.ComponentesUtil;

import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JSeparator;
import javax.swing.JTable;

/**
 * 
 * @author Alex Girao
 */
public class PainelLancamentoCadastro extends PainelGenerico {

	private static final long serialVersionUID = 8167621686757034040L;
	
	private JTextField jtfDescricao;
	private JFormattedTextField jftData;
	private JComboBox jcbTipoLancamento;
	private JFormattedTextField jtfParcelas;
	private JFormattedTextField jftTotal;
	private JButton jbtEstimativa;
	private JButton jbtCancelar;
	private JButton jbtSalvar;
	
	private LancamentoBusiness lancamentoBusiness;
	private LancamentoTipoBusiness lancamentoTipoBusiness;
	private JTable table;

	/**
	 * Create the panel.
	 */
	public PainelLancamentoCadastro() {
		super();
		lancamentoBusiness = new LancamentoBusiness();
		lancamentoTipoBusiness = new LancamentoTipoBusiness();
		iniciarComponentes();
		aplicarEventos();
	}

	public PainelLancamentoCadastro(long parseLong) {
		iniciarComponentes();
		aplicarEventos();
	}

	@Override
	protected void aplicarEventos() {
		
	}

	@SuppressWarnings("rawtypes")
	@Override
	protected void iniciarComponentes() {
		JLabel jblDescricao = new JLabel(Dicionario.COMUNS_DESCRICAO+":*");
		jblDescricao.setBounds(10, 14, 68, 14);
		add(jblDescricao);
		
		jtfDescricao = new JTextField();
		jtfDescricao.setBounds(82, 11, 408, 20);
		add(jtfDescricao);
		jtfDescricao.setColumns(10);
		
		JLabel jlbDataInicial = new JLabel(Dicionario.COMUNS_DATA_INICIAL+":*");
		jlbDataInicial.setBounds(10, 39, 72, 14);
		add(jlbDataInicial);
		
		jftData = new JFormattedTextField();
		ComponentesUtil.aplicarMascaraJFormattedTextField(jftData, "##/##/####");
		
		jftData.setBounds(82, 36, 88, 20);
		add(jftData);
		
		JLabel jlbLancamentoTipo = new JLabel(Dicionario.COMUNS_FINALIDADE+":*");
		jlbLancamentoTipo.setBounds(186, 39, 72, 14);
		add(jlbLancamentoTipo);
		
		jcbTipoLancamento = new JComboBox();
		carregarComboBox();
		jcbTipoLancamento.setBounds(254, 36, 236, 20);
		add(jcbTipoLancamento);
		
		JLabel jlbValorTotal = new JLabel(Dicionario.COMUNS_TOTAL+":*");
		jlbValorTotal.setBounds(10, 64, 46, 14);
		add(jlbValorTotal);
		
		JLabel jlbParcelas = new JLabel(Dicionario.COMUNS_PARCELAS+":*");
		jlbParcelas.setBounds(186, 64, 72, 14);
		add(jlbParcelas);
		
		jtfParcelas = new JFormattedTextField();
		ComponentesUtil.aplicarMascaraJFormattedTextField(jtfParcelas, "###");
		jtfParcelas.setBounds(254, 61, 36, 20);
		add(jtfParcelas);
		
		jftTotal = new JFormattedTextField();
		ComponentesUtil.aplicarMascaraJFormattedTextField(jftTotal, "######.##");
		jftTotal.setBounds(82, 61, 88, 20);
		add(jftTotal);
		
		jbtEstimativa = new JButton(Dicionario.COMUNS_ESTIMAR);
		jbtEstimativa.setBounds(10, 89, 89, 23);
		add(jbtEstimativa);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 123, 480, 14);
		add(separator);
		
		table = new JTable();
		table.setBounds(10, 135, 480, 206);
		add(table);
		
		jbtSalvar = new JButton(Dicionario.COMUNS_SALVAR);
		jbtSalvar.setBounds(10, 352, 89, 23);
		add(jbtSalvar);
		
		jbtCancelar = new JButton(Dicionario.COMUNS_CANCELAR);
		jbtCancelar.setBounds(109, 352, 89, 23);
		add(jbtCancelar);
	}
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private void carregarComboBox(){
		try {
			List<LancamentoTipo> tipos = lancamentoTipoBusiness.buscarTodos();
			//assim como é feito numa JTable, temos o DefaultComboBoxModel que é o model do JComboBox
			DefaultComboBoxModel comboModel = (DefaultComboBoxModel) jcbTipoLancamento.getModel();
			//removendo todos os elementos do combo
			comboModel.removeAllElements();
			comboModel.addElement(Dicionario.COMUNS_SELECIONE);
			if(tipos!=null && !tipos.isEmpty()){
				//percorrendo a lista para inserir os valores no combo
				for (int linha = 0; linha < tipos.size(); linha++){
					//pegando a categoria da lista
					LancamentoTipo tipo = tipos.get(linha);
					//adicionando a categoria no combo
					comboModel.addElement(tipo);
				}
			}
		} catch (BusinessException e) {
			e.printStackTrace();
		}
	}
	
	private boolean isCamposObrigatoriosPreenchidos(){
		return false;
	}
	
	private void estimar(){
		
	}
	
	private void salvar(){
		
	}
	
	
}
